layui.use(['jquery', 'common'], () => {
    var $ = layui.jquery;
    
    // ------------------------------- 查询面板方法定义开始 --------------------------------------------------------------//
    window.queryForm = {
        toggle: (cls = "query-panel") => { // 显示/隐藏查询面板
            if ($("." + cls).css("display") == "none"){
                $("." + cls).show("fast");
            } else {
                $("." + cls).hide("fast");
            }
        }
        , search: (func) => {
            if (func !== undefined && func !== null) {
                // 执行回调
                func();
            } else {
                // 执行数据表格搜索方法
                window.dataTable.search();
            }
        }
        , reset: (func, filter = "query-form") => {
            // 调用查询页面中表单的的重置方法
            $('[lay-filter="' + filter + '"]')[0].reset();
            
            window.queryForm.search(func);
        }
    };
    // ------------------------------- 查询面板方法定义结束 --------------------------------------------------------------//
    
    
    // ------------------------------- 查询面板操作监听开始 --------------------------------------------------------------//
    // 监听查询面板[搜索]按钮点击事件
    $(".query-form-search").click((obj) => {
        // 查询数据表格
        window.queryForm.search();
    });
    
    // 监听查询面板[重置]按钮点击事件
    $(".query-form-reset").click((obj) => {
        // 重置查询表单数据
        $('[lay-filter="query-form"]')[0].reset();
        // 查询数据表格
        window.queryForm.search();
    });
    // ------------------------------- 查询面板操作监听结束 --------------------------------------------------------------//
    
    
    // ------------------------------- 查询面板初始化开始 --------------------------------------------------------------//
    $(document).ready(() => {
        // 移动模式下隐藏查询面板
        if ($(".query-panel").length > 0) {
            layui.use('common', () => {
                var common = layui.common;
                if (common.isModile()) {
                    $(".query-panel").hide();
                } else {
                    $(".query-panel").show();
                }
            });
        }
        
        /*
         * laydate 时间控件绑定
         * 控件要有"select-time"这个class，ID必须为"startTime"和"endTime"。如果有另一对起止时间控件，则必须重写配置。
         * 如：
         * <input id="startTime" class="layui-input select-time" type="text" name="startDate" placeholder="开始日期" autocomplete="off">
         * <input id="endTime"   class="layui-input select-time" type="text" name="endDate"   placeholder="结束日期" autocomplete="off">
         */
        if ($(".select-time").length > 0) {
            var startLayDate;
            var endLayDate;
            layui.use('laydate', () => {
                var laydate = layui.laydate;
                startLayDate = laydate.render({
                    elem: '#startTime',
                    max: $('#endTime').val(),
                    theme: 'molv',
                    type: $('#startTime').attr("data-type") || 'date',
                    trigger: 'click',
                    done: (value, date) => {
                        // 结束时间大于开始时间
                        if (value !== '') {
                            endLayDate.config.min.year = date.year;
                            endLayDate.config.min.month = date.month - 1;
                            endLayDate.config.min.date = date.date;
                        } else {
                            endLayDate.config.min.year = '';
                            endLayDate.config.min.month = '';
                            endLayDate.config.min.date = '';
                        }
                        $('#endTime').trigger('click');
                    }
                });
                endLayDate = laydate.render({
                    elem: '#endTime',
                    min: $('#startTime').val(),
                    theme: 'molv',
                    type: $('#endTime').attr("data-type") || 'date',
                    trigger: 'click',
                    done: (value, date) => {
                        // 开始时间小于结束时间
                        if (value !== '') {
                            startLayDate.config.max.year = date.year;
                            startLayDate.config.max.month = date.month - 1;
                            startLayDate.config.max.date = date.date;
                        } else {
                            startLayDate.config.max.year = '2099';
                            startLayDate.config.max.month = '12';
                            startLayDate.config.max.date = '31';
                        }
                    }
                });
            });
        }
    });
    // ------------------------------- 查询面板初始化结束 --------------------------------------------------------------//
});